<?
/*************************************
    File name: pagers.php
    Author: Tralo Mihail
    Email: daizz@mail.ru
    Last modified: October 17, 2005
**************************************/
/* 
Example $lang for one language:
	$lang["W_PAGEINFO1"] = "Знайдено %s: %s";
	$lang["W_PAGEINFO2"] = "Знайдено %s: %s - %s з %s";
	$lang['B_PREVIOUS'] = 'Попередня'; 
	$lang['B_NEXT']     = 'Наступна'; 
*/

function getMess($offset, $perpage, $rows, $count, $word=""){
   global $lang;
   if($count<= $perpage){
	 $result = pf( $lang["W_PAGEINFO1"], array($word, $count));
   }else{
	 $result = pf( $lang["W_PAGEINFO2"], array($word, ($offset+1), ($offset+$rows), $count));
   }
   return($result);
 }

// $max - max count of pages
// $cur - current(selected) page
// $url1="index.php?param=777&page=", $url2=""  <-- examples 1
// 'javascript:document.getElementById("page").value="','";document.HiddenForm.submit();');  <-- examples 2
function Pager($max,  $cur, $url1="", $url2=""){
 global $lang;
 $cur++;
 $str = "";
 if ($max == 1) return $str;
// Examples: Previous 1 2 ... 9 10 11 12 13 ... 15 16 Next

// show first N pages ==> " Previous 1 2 3 ... "
if($cur>1) $str.= "<a href='".$url1.($cur-2).$url2."' class='nav' onfocus='blur()'>".$lang['B_PREVIOUS']."</a> ";
if($cur>3) {
  for ($i=1; $i<( ($cur<5)?$cur-2:3); $i++)
	{
	  if($cur>3) $str.= "<a href='".$url1.($i-1).$url2."' class='nav' onfocus='blur()'>".$i."</a> ";
	}
  if($cur>=6)$str.= " <a href='".$url1.((int)($cur/2)-1).$url2."' class='nav' onfocus='blur()'>...</a> ";
}

// Show center line  ... 8 9 10 [cur] 11 12 13 ...
for ($i=$cur-2; $i<=$cur+2; $i++)
{
  if ( ($i>=1) && ($i<=$max) ){
    if($i==$cur){  $str.= "<a href='".$url1.($i-1).$url2."' class='nav_cur' onfocus='blur()'>".$i."</a> "; }
     else { $str.= "<a href='".$url1.($i-1).$url2."' class='nav' onfocus='blur()'>".$i."</a> "; }
   }
}
if($cur+4<$max){ 
  $str.= " <a href='".$url1.((int)(($max+$cur-1)/2)).$url2."' class='nav' onfocus='blur()'>...</a> ";
//	$str.= "... "; 
}
// show last N pages ==> " ... 11 12 13 Next "
for ( $i=$cur+2; $i<$max; $i++)
{
  if($i>$max-3)
	$str.="<a href='".$url1.($i).$url2."' class='nav' onfocus='blur()'>".($i+1)."</a> ";
};
if($cur<$max) $str.= "<a href='".$url1.($cur).$url2."' class='nav' onfocus='blur()'>".$lang['B_NEXT']."</a>";

return $str."<br>";
}

// $perpage - количество записей на странице
// $count - общее количество записей
// $page - текущая страница
// $url1 и $url2 - для реализации перехода по ссылке
//		(толи через прямую ссылку(example1), толи через submit(example2)
// 			example1:	$url1="index.php?param=777&page=", $url2=""
// 			example2:	$url1='javascript:document.getElementById("page").value="',
//						$url2='";document.HiddenForm.submit();'
// Если $word не пришло то фраза типа "Знайдено : 31 - 33 з 33" выводиться не будет
//
function show_pages_line($perpage, $count, $page, $url1, $url2="", $word=""){
$offset = $page*$perpage;   // Номер записи с которой будет производиться последующее отображение записей
$el_at_this_page = ( ($count-$offset)>$perpage)?$perpage:($count-$offset); // Количество записей кот. нужно отобразить именно на текущей странице
$page_count = ($count % $perpage)?((int)($count / $perpage)+1):((int)($count / $perpage)); // Общее количество страниц

?><table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
<? if($word!="") {?>
   	<td width="5%"><nobr><?=getMess($offset, $perpage, $el_at_this_page, $count, $word);?><nobr></td>
<? } ?>
	<td align="right"><?=Pager($page_count, $page,  $url1, $url2)?></td>
  </tr>
</table><?
}

?>